
"""
输出“水仙花数”，水仙花数是指1个3位的十进制数，其各个数字的立方和恰好等于该数本身，例如，153是水仙花数，因为153 = 1^3 + 5^3 +3^3
"""
count = 0  # 定义计数变量count，并赋值为0
for i in range(100, 1000):
    b = i // 100  # 计算百位数
    s = (i % 100) // 10  # 计算十位数
    g = i % 10  # 计算个位数
    # 判断数字的立方和是否等于该数本身
    if i == g ** 3 + s ** 3 + b ** 3:
        # 如果是，计数变量增加1，并输出该数
        count += 1
        print(i,end=' ')
print('\n水仙花数总共有', count, '个')

"""
百马百担，现有100匹马需驮运100担货，其中大马驮运3担，中马驮运2担，两匹小马驮一担，问一百匹马中大马、中马、小马各多少？编写程序将每种情况列出来
"""
n = 0 # 定义情况数
# i表示大马数，由于大马驮3担，所以它的取值小于100/3=33
for i in range(1,33):
    # j表示中马数，由于大马驮2担，所以它的取值小于100/2=50
    for j in range(1,50):
        k = 100 - j - i  # k表示小马数，计算小马数
        # 判断总担数量是否为100
        # 由于两匹小马驮一担，所以必须同时满足k为偶数
        if((i * 3 + j * 2 + k / 2) == 100 and (k % 2 == 0)):
            n += 1   # 情况数增加1
            # 输出每种马匹数
            # print('大马', i, '匹,中马', j, '匹,小马', k, '匹')
            print(f'大马{i}匹，中马{j}匹，小马{k}匹')
print(f'一共有{n}种情况') # 输出情况数



"""
国王的遗产:
X国是个小国，国王K有6个儿子，在临终前，K国王立下遗嘱：国王的一批牛作为遗产要分给它的6个儿子，其中，大儿子分1/4，二儿子分1/5，三儿子分1/6....直到小儿子分1/9，最后还剩下11头牛，分给管家，请计算国王这批遗产中一共有多少头牛，
todo:牛是活得，不能一头牛切开分
"""
x = 6 + 11  # 定义牛总数变量x，由于最后剩下11头牛且国王有6个儿子，故赋初值为17

while True:# 循环
    # 判断牛总数是否同时满足被4、5、6、7、8、9整除  判断最后剩下的牛头数是否等于11
    if (x % 4 == 0 and x % 5 == 0 and x % 6 == 0 and x % 7 == 0 and x % 8 == 0 and x % 9 == 0) and (x - x / 4 - x / 5 - x / 6 - x / 7 - x / 8 - x / 9 == 11):
        print('国王一共', x, '头牛')  # 如果是，输出x
        break  # 退出循环
    x += 1 # x增加1